하나의 키로 데이터를 암호화 및 복호화하는 방식이다
- 장점
- 암복호화에 드는 비용이 적다.
- 속도가 빠르다
- 단점
- 대칭키가 노출되면 보안상 치명적인 문제가 발생한다
- 대칭키를 전달하는 과정이 어렵다 → 대칭키을 안전하게 전달하기 위해 “비대칭키” 방식이 등장
두 개의 키로 데이터를 암호화 및 복호화하는 방식이다
- 두 개의 키 : 공개키, 개인키
- 공개키로 암호화하면 개인키로만 복호화할 수 있다. →
데이터를 암호화하여 보호하기 위한 목적
- 개인키로 암호화하면 공개키로만 복호화할 수 있다. →
인증의 목적
- 공개키로 암호화하면 개인키로만 복호화할 수 있다. →
- 장점
- 보안성이 좋다
- 단점
- 구현이 어렵다
- 속도가 느리다
대칭키는 데이터 암호화하기 위해 사용하고, 비대칭키는 대칭키를 안전하게 전달하기 위해 사용한다.
웹 사이트와 웹 브라우저 혹은 두 서버 사이에서 주고 받는 데이터를 암호화를 담당하는 계층이다.
- OSI 7계층과 4계층 사이에 위치해 있다.
- TCP보다 상위 계층에 있으므로 TCP 기반의 모든 어플리케이션에서 SSL 계층이 적용될 수 있다. (HTTP 전용으로만 사용되지 않는다.)
- FTP over SSL, SMTP over SSL
클라이언트와 서버가 암호화 통신을 하기위해 서로의 신분을 확인하고, 필요한 정보를 교환하는 과정이다.
- 서버는
CA(Certificate Authority)
에게 인증 요청을 한다 (자신의 정보와 공개키를 전달) - CA는 CA의 개인키로
서버의 정보
+서버의 공개키
를 암호화하여서버의 CA 인증서
를 생성하고, 이를 서버에게 전달한다 - 클라이언트는 서버에게
ClientHello
패킷을 전달하여 접속을 요청한다- ClientHello에
클라이언트에서 사용 가능한 Cipher Suite 목록
,Session ID
,SSL 프로토콜 버전
,Random Byte
등이 담겨있다.
- ClientHello에
- 서버는
클라이언트의 Cipher Suite 리스트 중 사용할 암호화 알고리즘
과서버의 SSL 프로토콜 버전
을ServerHello
패킷에 담아 클라이언트에게 알린다 - 서버는 클라이언트에게
CA 인증서
를 전송한다 (Certificate) - 클라이언트는 브라우저에 내장된 CA 공개키로 CA 인증서를 복호화하여
서버의 공개키
를 얻는다 (Certificate & ServerHello Done) - 클라이언트는
클라이언트의 대칭키
를서버의 공개키
로 암호화하여 서버로 전달한다. (클라이언트 입장 : ChangeCipherSpec, Finished) - 서버는
서버의 개인키
로 이를 복호화하여클라이언트의 대칭키
를 얻는다. (서버 입장 : ChangeCiperSepc, Finished) - 서버와 클라이언트는 각자 전달할 데이터를
대칭키
로 암복호화하면서 안전하게 통신한다.